package com.ruoyi.system.domain;

import java.math.BigDecimal;
import java.util.Date;

import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.system.entity.AbdulBaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 商品管理对象 product_management
 *
 * @author ruoyi
 * @date 2025-05-23
 */
@EqualsAndHashCode(callSuper = true)
@Data
@TableName("product_management")
public class ProductManagement extends AbdulBaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 商品唯一标识符 */
    private Long id;

    /** 商品名称 */
    @Excel(name = "商品名称")
    private String productName;

    /** 商品条形码或二维码标识 */
    @Excel(name = "商品条形码或二维码标识")
    private String barcode;

    /** 商品规格描述，如"500ml/瓶" */
    @Excel(name = "商品规格描述")
    private String specification;

    /** 商品销售价格 */
    @Excel(name = "商品销售价格")
    private BigDecimal sellingPrice;

    /** 商品成本价格 */
    @Excel(name = "商品成本价格")
    private BigDecimal costPrice;

    /** 商品简写或别名 */
    @Excel(name = "商品简写或别名")
    private String abbreviation;

    /** 商品所属分类 */
    @Excel(name = "商品所属分类")
    private String category;

    /** 商品品牌名称 */
    @Excel(name = "商品品牌名称")
    private String brand;

    /** 商品计量单位，如"瓶"、"个"等 */
    @Excel(name = "商品计量单位")
    private String unit;

    /** 商品保质期天数 */
    @Excel(name = "商品保质期天数")
    private Long shelfLife;

    /** 商品当前状态 */
    @Excel(name = "商品当前状态")
    private String status;

    /** 是否已上架销售(0:否,1:是) */
    @Excel(name = "是否已上架销售(0:否,1:是)")
    private Integer isListed;

    /** 是否已下架(0:否,1:是) */
    @Excel(name = "是否已下架(0:否,1:是)")
    private Integer isUnlisted;

    /** 是否参与库存计算(0:否,1:是) */
    @Excel(name = "是否参与库存计算(0:否,1:是)")
    private Integer participateInventory;

    /** 商品在列表中的排序序号 */
    @Excel(name = "商品在列表中的排序序号")
    private Long sortOrder;

    /** 市场销售价(与售价区分) */
    @Excel(name = "市场销售价(与售价区分)")
    private BigDecimal marketPrice;

    /** 是否基于成本价设置销售价(0:否,1:是) */
    @Excel(name = "是否基于成本价设置销售价(0:否,1:是)")
    private Integer priceBasedOnCost;

    /** 库存预警阈值 */
    @Excel(name = "库存预警阈值")
    private Long inventoryWarning;

    /** 库存上限 */
    @Excel(name = "库存上限")
    private Long inventoryMax;

    /** 配品名称(组合商品用) */
    @Excel(name = "配品名称(组合商品用)")
    private String componentName;

    /** 配品所属分类 */
    @Excel(name = "配品所属分类")
    private String componentCategory;

    /** 配品简写或别名 */
    @Excel(name = "配品简写或别名")
    private String componentAbbreviation;

    /** 配品计量单位 */
    @Excel(name = "配品计量单位")
    private String componentUnit;

    /** 商品图片URL或存储路径 */
    @Excel(name = "商品图片URL或存储路径")
    private String productImage;

    /** 商品详细描述或介绍 */
    @Excel(name = "商品详细描述或介绍")
    private String description;

    /** 原材料所属分类 */
    @Excel(name = "原材料所属分类")
    private String materialCategory;

    /** 原材料名称 */
    @Excel(name = "原材料名称")
    private String materialName;

    /** 生产一个商品所需的原材料数量 */
    @Excel(name = "生产一个商品所需的原材料数量")
    private BigDecimal materialQuantity;

    /** 原材料计量单位 */
    @Excel(name = "原材料计量单位")
    private String materialUnit;

    /** 商品所属门店名称 */
    @Excel(name = "商品所属门店名称")
    private String storeName;

    /** 门店唯一标识符 */
    @Excel(name = "门店唯一标识符")
    private String storeCode;

    /** 商品记录添加时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "商品记录添加时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date addTime;

    /** 添加或修改商品记录的员工姓名 */
    @Excel(name = "添加或修改商品记录的员工姓名")
    private String operator;

    /** 手机号 */
    @Excel(name = "手机号")
    private String phone;
}
